package cn.huiyunche.base.service.interfaces;

import cn.huiyunche.base.service.form.BVehicleTypeForm;
import cn.huiyunche.base.service.model.BVehicleType;
import cn.huiyunche.base.service.query.BVehicleTypeQueryConditions;
import cn.huiyunche.base.service.vo.PageVo;
import org.springframework.validation.BindingResult;

import java.util.List;
import java.util.Map;

/**
 * The interface B vehicle type service.
 *
 * @FileName: cn.huiyunche.service.base.tms.interfaces
 * @Description: TMS车型分类
 * @author: Aaron
 * @date: 2016 /11/2 下午4:04
 */
public interface BVehicleTypeService {

    /**
     * Gets id by conditions.
     *
     * @param vehicleCode the vehicle code
     * @param vehicleName the vehicle name
     * @param vehicleDesc the vehicle desc
     * @return the id by conditions
     */
    Long getIdByConditions(String vehicleCode, String vehicleName, String vehicleDesc);

    /**
     * Select by fuel code list.
     *
     * @param fuelTypeId the fuel code
     * @return the list
     */
    List<BVehicleType> selectByFuelTypeId(Integer fuelTypeId);

    /**
     * Add long.
     *
     * @param form the form
     * @param br   the br
     * @return the long
     */
    Long add(BVehicleTypeForm form, BindingResult br);

    /**
     * Select by primary id b vehicle type.
     *
     * @param id the id
     * @return the b vehicle type
     */
    BVehicleType selectByPrimaryId(Long id);

    /**
     * Update long.
     *
     * @param form the form
     * @param br   the br
     * @return the long
     */
    Long update(BVehicleTypeForm form, BindingResult br);

    /**
     * Select list by conditions map.
     *
     * @param pageVo     the page vo
     * @param conditions the conditions
     * @return the map
     */
    Map<String, Object> selectListByConditions(PageVo pageVo, BVehicleTypeQueryConditions conditions);

    /**
     * Select by type code list.
     *
     * @param typeCode the type code
     * @return the list
     */
    List<BVehicleType> selectByTypeCode(String typeCode);

}
